#include "XPlan.h"

/**
Constructeur
*/
XPlan::XPlan(void)
{
}

/**
Detructeur
*/
XPlan::~XPlan(void)
{
	for (int i=0; i<_tab.size(); i++)
		delete _tab[i];
}

/**
Creation d'un plan D3D
@param[in]	pDevice	pointeur sur le D3D device
*/
void XPlan::create(LPDIRECT3DDEVICE9 pDevice)
{
	_device = pDevice;
	_num = _tab.size();

	int mid = _tab.size() / 2;

	float x = -2.0f;
	for (int i=0; i<mid; i++ )
	{
		_tab[i]->create(pDevice);
		_tab[i]->set( x, -70.0f );
		x += 0.5f;
	}

	_tab[mid]->create(pDevice);
	_tab[mid]->set( 0.0f, 0.0f );

	x = 1.5f;
	for (int i=mid+1; i<_tab.size(); i++ )
	{
		_tab[i]->create(pDevice);
		_tab[i]->set( x, 70.0f );
		x += 0.5f;
	}
	//_it = _tab.begin();
}

/**
Ajout d'un nouveau XRectangle
@param[in]	imgFilename	chemin vers le fichier image
*/
void XPlan::add(const wchar_t* imgFilename)
{
	XRectangle *pRect = new XRectangle();
	pRect->setImgFilename(imgFilename);
	_tab.push_back( pRect );
}

/**
Affiche un XPlan
@param[in]	pDevice	pointeur sur le D3D device
*/
void XPlan::draw(LPDIRECT3DDEVICE9 pDevice)
{
	int mid = _tab.size()  / 2;
	for (int i=mid-1; i>=0; i--)
	{
		_tab[i]->draw(pDevice);
	}
	for (int i=mid; i<_tab.size(); i++)
	{
		_tab[i]->draw(pDevice);
	}
}

/**
Appel a un deplacement
@param[in]	imgFilename	nouveau fichier image a charger
*/
void XPlan::move(wchar_t *imgFilename)
{
	XRectangle *pFirst = _tab[0];
	std::vector<XRectangle*> tmp;
	std::vector<XRectangle*>::iterator it = _tab.begin();
	for ( it++; it != _tab.end(); it++ )
	{
		(*it)->setToGo( *(it - 1 ) );
		tmp.push_back( (*it) );
	}

	tmp.push_back( pFirst );

	//le dernier passe premier
	pFirst->setImgFilename(imgFilename);
	pFirst->loadTexture(_device);
	pFirst->set( _tab[4] );

	_tab = tmp;

}

void XPlan::swap()
{
	XRectangle* tmp = _tab[4];
	for (int i=3;i>=0;i--)
	{
		tmp = _tab[3];
		_tab[3] = _tab[4];
	}
}
